import argparse
import torch
import numpy as np
import random


def get_parser_args():
    # Training settings
    parser = argparse.ArgumentParser()
    # bAbI任务序号
    parser.add_argument('--task_id', type=int, default=4, help='bAbI task id')
    # bAbI问题序号
    parser.add_argument('--question_id', type=int, default=0, help='question types')
    # 多线程
    parser.add_argument('--workers', type=int, help='number of data loading workers', default=2)
    # batch大小
    parser.add_argument('--batchSize', type=int, default=10, help='input batch size')
    # h_v维度
    parser.add_argument('--state_dim', type=int, default=4, help='GGNN hidden state size')
    # GNN层数
    parser.add_argument('--n_steps', type=int, default=5, help='propogation steps number of GGNN')
    # epochs数量
    parser.add_argument('--niter', type=int, default=10, help='number of epochs to train for')
    # 学习率
    parser.add_argument('--lr', type=float, default=0.01, help='learning rate')
    # 使用cuda
    parser.add_argument('--cuda', action='store_true', help='enables cuda')
    # 是否打印中间训练结果
    parser.add_argument('--verbal', action='store_true', help='print training info or not')
    # 随机种子
    parser.add_argument('--seed', type=int, default=42, help='Random seed.')

    # args = parser.parse_args()
    args = parser.parse_args(args=[])
    args.cuda = not args.cuda and torch.cuda.is_available()

    # 产生随机种子，以使得结果是确定的
    np.random.seed(args.seed)
    torch.manual_seed(args.seed)
    if args.cuda:
        torch.cuda.manual_seed(args.seed)
    args.dataroot = '../../data/babi_data/processed_1/train/%d_graphs.txt' % args.task_id
    return args
